package com.campus.common.message;

import java.io.Serializable;

/**
 * 学生选课/选班请求
 */
public class StudentCourseRequest implements Serializable {

    public enum Action {
        // 课程相关操作
        VIEW_ALL_COURSES,
        VIEW_AVAILABLE_COURSES,   // 查看可选课程（课程列表 + 每门课程的班级列表）
        VIEW_SELECTED_COURSES,    // 查看已选课程（课程列表 + 每门课程的已选班级）
        QUERY_COURSE,             // 查询课程（按课程ID或课程名称）
        VIEW_FIRST_TIME_COURSES,  // 查看首修课程（第一次修读的课程）
        VIEW_RETAKE_COURSES,      // 查看重修课程（之前未通过/需要重修的课程）

        // 班级相关操作
        SELECT_CLASSROOM,         // 选课：选择某门课程下的班级
        DROP_CLASSROOM            // 退课：退掉某门课程对应的班级
    }

    private Action action;      // 请求动作
    private String classId;     // 针对具体班级的操作（选班/退班）
    private String courseId;    // 查询课程时按课程ID
    private String courseName;  // 查询课程时按课程名称
    private String keyword;     // 🔍 新增：查询关键字（ID 或 名称都可以）
    private String studentId;   // 学生ID

    public StudentCourseRequest() {}

    public StudentCourseRequest(Action action, String studentId, String classId, String courseId, String courseName, String keyword) {
        this.action = action;
        this.studentId = studentId;
        this.classId = classId;
        this.courseId = courseId;
        this.courseName = courseName;
        this.keyword = keyword;
    }

    // ===== Getter / Setter =====
    public Action getAction() { return action; }
    public void setAction(Action action) { this.action = action; }

    public String getClassId() { return classId; }
    public void setClassId(String classId) { this.classId = classId; }

    public String getCourseId() { return courseId; }
    public void setCourseId(String courseId) { this.courseId = courseId; }

    public String getCourseName() { return courseName; }
    public void setCourseName(String courseName) { this.courseName = courseName; }

    public String getKeyword() { return keyword; }
    public void setKeyword(String keyword) { this.keyword = keyword; }

    public String getStudentId() { return studentId; }
    public void setStudentId(String studentId) { this.studentId = studentId; }
}
